package com.zlx.store.common.config;

import com.esotericsoftware.kryo.serializers.DefaultSerializers;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.GenericToStringSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisConfig {
    /**
     * 接受一个 RedisConnectionFactory 对象作为参数，用于创建 Redis 连接工厂。
     * 创建一个 RedisTemplate<String, Object> 对象，用于操作 Redis 数据。
     * 设置 RedisTemplate 的连接工厂为传入的 factory 对象。
     * 设置 RedisTemplate 的键序列化器为 StringRedisSerializer()，将键序列化为字符串类型。
     * 设置 RedisTemplate 的值序列化器为 GenericJackson2JsonRedisSerializer()，将值序列化为 JSON 格式。
     * 通过配置这个方法并返回 RedisTemplate 对象，您可以在应用程序中使用该对象来执行与 Redis 相关的操作。例如，存储和检索键值对数据。
     * @param factory
     * @return
     */
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(factory);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return redisTemplate;
    }


}
